home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / comm1 / mgplp378.lha / magplip / source / magplip.i < prev    next >
Text File  |  1996-04-10  |  6KB  |  225 lines

  1.    IFND    MAGPLIP_I
  2. MAGPLIP_I     SET     1
  3.  
  4. ;
  5. ;  $VER: magplip.i 1.8 (10 Apr 1996)
  6. ;
  7. ;  magplip.device - Parallel Line Internet Protocol
  8. ;
  9. ;  Original code written by Oliver Wagner and Michael Balzer.
  10. ;
  11. ;  This version has been completely reworked by Marius Gröger, introducing
  12. ;  slight protocol changes. The new source is a lot better organized and
  13. ;  maintainable.
  14. ;
  15. ;  Additional changes and code cleanup by Jan Kratochvil and Martin Mares.
  16. ;  The new source is significantly faster and yet better maintainable.
  17. ;
  18. ;  (C) Copyright 1993-1994 Oliver Wagner & Michael Balzer
  19. ;  (C) Copyright 1995 Jan Kratochvil & Martin Mares
  20. ;  (C) Copyright 1995-1996 Marius Gröger
  21. ;      All Rights Reserved
  22. ;
  23. ;  $HISTORY:
  24. ;
  25. ;  10 Apr 1996 : 001.008 :  + PLIPF_REPLYSS didn't fit into byte
  26. ;                           + pb_ExtFlags
  27. ;  29 Mar 1996 : 001.007 :  changed copyright note
  28. ;  30 Dec 1995 : 001.006 :  single dynamic frame buffer
  29. ;  29 Dec 1995 : 001.005 :  + pb_Startup
  30. ;                        :  + new flag PLIPF_REPLYSS
  31. ;  03 Sep 1995 : 001.004 :  + removed PLIP(F|B)_SIDEA
  32. ;                           + hardware addressing fields in PLIPBase
  33. ;  30 Aug 1995 : 001.003 :  changed to match magplip.h
  34. ;  20 Aug 1995 : 001.002 :  + ASM parts really don't need to know about the
  35. ;                             configuration defaults.
  36. ;                           + using BITDEF macro from exec/types.i
  37. ;  13 Aug 1995 : 001.001 :  code cleanup
  38. ;  12 Feb 1995 : 001.000 :  created
  39. ;
  40.  
  41.  
  42.     IFND EXEC_TYPES_I
  43.     INCLUDE "exec/types.i"
  44.     ENDC
  45.  
  46.     IFND EXEC_LISTS_I
  47.     INCLUDE "exec/lists.i"
  48.     ENDC
  49.  
  50.     IFND EXEC_INTERRUPTS_I
  51.     INCLUDE "exec/interrupts.i"
  52.     ENDC
  53.  
  54.     IFND EXEC_LIBRARIES_I
  55.     INCLUDE "exec/libraries.i"
  56.     ENDC
  57.  
  58.     IFND EXEC_SEMAPHORES_I
  59.     INCLUDE "exec/semaphores.i"
  60.     ENDC
  61.  
  62.     IFND DEVICES_TIMER_I
  63.     INCLUDE "devices/timer.i"
  64.     ENDC
  65.  
  66.     IFND DEVICES_SANA2_I
  67.     INCLUDE "devices/sana2.i"
  68.     ENDC
  69.  
  70.     IFND DOS_DOS_I
  71.     INCLUDE "dos/dos.i"
  72.     ENDC
  73.  
  74.  
  75. ;****************************************************************************
  76.  
  77.  
  78. PLIP_MAXMTU         equ 8192
  79. PLIP_ADDRFIELDSIZE  equ 1
  80.  
  81.  
  82. ;****************************************************************************
  83.  
  84.  
  85.    ; Each data packet is put into this kind of frame before sent over the
  86.    ; line. See below for definitions.
  87.    ;
  88.    STRUCTURE PLIPFrame,0
  89.      USHORT   pf_Sync
  90.      SHORT    pf_Size
  91.      USHORT   pf_CRC
  92.      ULONG    pf_Type
  93. ;*** UBYTE    pf_Data[MTU];
  94.      LABEL PLIPFrame_SIZE
  95.  
  96. PKTFRAMESIZE_1   equ     4
  97. PKTFRAMESIZE_2   equ     6
  98.  
  99. SYNCBYTE_HEAD    equ     $42
  100. SYNCBYTE_CRC     equ     $01
  101. SYNCBYTE_NOCRC   equ     $02
  102. SYNCWORD_CRC     equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_CRC)
  103. SYNCWORD_NOCRC   equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_NOCRC)
  104.  
  105.  
  106. ;****************************************************************************
  107.  
  108.  
  109. S2SS_TXERRORS     equ 0
  110. S2SS_COLLISIONS   equ 1
  111. S2SS_COUNT        equ 2
  112.  
  113.  
  114. S2SS_PLIP_TXERRORS equ ((((S2WireType_PLIP) & $ffff) << 16) ! S2SS_TXERRORS)
  115. S2SS_PLIP_COLLISIONS equ ((((S2WireType_PLIP) & $ffff) << 16) ! S2SS_COLLISIONS)
  116.  
  117.  
  118. ;****************************************************************************
  119.  
  120.  
  121.    ;
  122.    ; Central driver static storage. See Flags bits below.
  123.    ;
  124.    STRUCTURE PLIPBase,LIB_SIZE
  125.      UBYTE  pb_Unit
  126.      UBYTE  pb_pad1
  127.      BPTR   pb_SegList
  128.      APTR   pb_MiscBase
  129.      APTR   pb_CIAABase
  130.      APTR   pb_UtilityBase
  131.      APTR   pb_TimerBase
  132.      APTR   pb_DOSBase
  133.      APTR   pb_SysBase
  134.      APTR   pb_Startup
  135.      APTR   pb_Server
  136.      APTR   pb_Task
  137.      STRUCT pb_Interrupt,IS_SIZE
  138.      ULONG  pb_IntSig
  139.      ULONG  pb_IntSigMask
  140.      ULONG  pb_ServerStoppedSigMask
  141.      APTR   pb_ServerPort
  142.      APTR   pb_TimeoutPort
  143.      APTR   pb_CollPort
  144.      STRUCT pb_TimeoutReq,IOTV_SIZE
  145.      STRUCT pb_CollReq,IOTV_SIZE
  146.      STRUCT pb_DevStats,S2DS_SIZE
  147.      STRUCT pb_SpecialStats,S2SSR_SIZE*S2SS_COUNT
  148.      STRUCT pb_ReadList,LH_SIZE
  149.      STRUCT pb_WriteList,LH_SIZE
  150.      STRUCT pb_EventList,LH_SIZE
  151.      STRUCT pb_ReadOrphanList,LH_SIZE
  152.      STRUCT pb_TrackList,LH_SIZE
  153.      STRUCT pb_BufferManagement,LH_SIZE
  154.      STRUCT pb_EventListSem,SS_SIZE
  155.      STRUCT pb_ReadListSem,SS_SIZE
  156.      STRUCT pb_WriteListSem,SS_SIZE
  157.      STRUCT pb_TrackListSem,SS_SIZE
  158.      STRUCT pb_ReadOrphanListSem,SS_SIZE
  159.      STRUCT pb_Lock,SS_SIZE
  160.      ULONG  pb_Retries
  161.      ULONG  pb_ReportBPS
  162.      ULONG  pb_MTU
  163.      ULONG  pb_AllocFlags
  164.      ULONG  pb_Timeout;
  165.      LONG   pb_CollisionDelay
  166.      LONG   pb_ArbitrationDelay
  167.      UBYTE  pb_TimeoutSet
  168.      UBYTE  pb_Flags
  169.      UWORD  pb_ExtFlags
  170.      APTR   pb_OldExceptCode
  171.      APTR   pb_OldExceptData
  172.      ULONG  pb_OldExcept
  173.      STRUCT pb_HandshakeMask,2              ; must be changed when
  174.      STRUCT pb_HandshakeBit,2               ; changing the datatype in .h
  175.      STRUCT pb_SrcAddr,PLIP_ADDRFIELDSIZE
  176.      STRUCT pb_DstAddr,PLIP_ADDRFIELDSIZE
  177.      APTR   pb_Frame
  178.    LABEL PLIPBase_SIZE
  179.  
  180. ;
  181. ; Bits for PLIPBase->pb_Flags
  182. ;
  183.    BITDEF PLIP,REPLYSS,0
  184.    BITDEF PLIP,EXCLUSIVE,1
  185.    BITDEF PLIP,NOTCONFIGURED,2
  186.    BITDEF PLIP,OFFLINE,3
  187.    BITDEF PLIP,SENDCRC,4
  188.    BITDEF PLIP,RECEIVING,5
  189.    BITDEF PLIP,COLLISION,6
  190.    BITDEF PLIP,SERVERSTOPPED,7
  191.  
  192. ;
  193. ; Bits for PLIPBase->pb_ExtFlags
  194. ;
  195.    BITDEF PLIPE,NOSPECIALSTATS,0
  196.  
  197.    ;
  198.    ; Index for PLIPBase->pb_HandshakeBit[]
  199.    ; Note: in contrast to the C-Version, this is actually not the index
  200.    ; but the offset in the array _in_bytes_. Therefore, if you change the
  201.    ; array's datatype, you need to adjust this.
  202.    ;
  203. HS_LINE    equ 0
  204. HS_REQUEST equ 1  ; better: 1*sizeof(UBYTE)
  205.  
  206.  
  207. ;****************************************************************************
  208.  
  209.    ;
  210.    ; Why isn't this in exec/types.i ?
  211.    ;
  212.  
  213.    IFND TRUE
  214. TRUE  equ 1
  215.    ENDC
  216.    IFND FALSE
  217. FALSE equ 0
  218.    ENDC
  219.  
  220.  
  221. ;****************************************************************************
  222.  
  223.  
  224.    ENDC MAGPLIP_I
  225.